// 题目描述：
// 二叉树也可以用数组来存储，
// 给定一个数组，树的根节点的值储存在下标1，
// 对于储存在下标n的节点，他的左子节点和右子节点分别储存在下标2*n和2*n+1，
// 并且我们用-1代表一个节点为空，
// 给定一个数组存储的二叉树，
// 试求从根节点到最小的叶子节点的路径，
// 路径由节点的值组成。

// 输入描述
// 输入一行为数组的内容，
// 数组的每个元素都是正整数，元素间用空格分割，
// 注意第一个元素即为根节点的值，
// 即数组的第n元素对应下标n，
// 下标0在树的表示中没有使用，所以我们省略了，
// 输入的树最多为7层。

// 输出描述
// 输出从根节点到最小叶子节点的路径上各个节点的值，
// 由空格分割，
// 用例保证最小叶子节点只有一个。
// 3 5 7 -1 -1 2 4
//     3
//    5 7(3)
// -1 -1 2 4

// 3 7 2

function binaryTree(arr) {
    let sum = [];
    let ans = []
    for (let i = 0; i < arr.length; i++) {
        let n = arr[i]
        if ((n !== -1 && arr[i * 2] === -1 && arr[2 * i + 1] === -1) || (n !== -1 && 2 * i > arr.length)) {
            sum.push(i + 1)
        }
    }
    sum.sort();
    if (sum.length) {
        let findMatch = sum[0];

        let j = findMatch;
        while (j > 0) {
            ans.push(arr[j-1]);
            if (j % 2 === 0) {
                j = j / 2;
            } else {
                j = (j - 1) / 2
            }
        }
        console.log(ans)
    }

}
binaryTree([3, 5, 7, -1, -1, 2, 4]);
binaryTree([5, 9, 8, -1, -1, 7, -1, -1, -1, -1, -1, 6]);